import common from "./index";
import { useUserStoreHook } from "@/store/modules/user";
/**
 * request请求
 */
const baseUrl = (process.env.config as any)[process.env.name as string];
export const request = (
	url: string, //接口地址
	method:
		| "OPTIONS"
		| "GET"
		| "HEAD"
		| "POST"
		| "PUT"
		| "DELETE"
		| "TRACE"
		| "CONNECT", //请求方式
	data: AnyObject, //请求的参数
	header?: any //设置请求的 header
) => {
	// 拼接url  config.base后面会讲到
	const apiUrl = baseUrl + url;
	// 这里是获取存在Store中的token，获取方式根据自身项目来
	const userStore = useUserStoreHook();
	// 全局添加请求头
	const obj = {
		// 获取Store中的token || 获取本地存储的token
		"Authori-zation": userStore.token || uni.getStorageSync("TOKEN") || ""
	};
	if (header) {
		// 有无传入header，有则合并
		const headers = Object.assign(header, obj);
		header = headers;
	} else {
		header = obj;
	}

	return new Promise((resolve, reject) => {
		uni.request({
			url: apiUrl,
			method,
			data,
			header,
			success(res) {
				if (res.statusCode == 200) {
					const data: any = res.data;
					if (data.code == 0) {
						// 正常抛出数据
						resolve(data.data);
					} else {
						if (data.code == 401) {
							// 未登录
							uni.redirectTo({
								url: "" //未登录跳转指定页面
							});
							uni.hideLoading();
							return reject(data);
						}
						// 错误数据
						uni.hideLoading();
						// 弹窗错误框，这里是自己封装组件，
						common.toastErr(data.message || "网络请求异常");
						reject(data);
					}
				} else {
					console.log(data);
					uni.hideLoading();
					common.toastErr("网络请求异常");
					reject(data);
				}
			},
			fail(error) {}
		});
	});
};
